وقتی با vi/vim کار میکنیم، دو رویکرد کلی وجود دارد:
۱. رویکرد Auto-save (ذخیره خودکار): برخی کاربران دوست دارند تغییرات به صورت خودکار ذخیره شوند.
۲. رویکرد Manual-save (ذخیره دستی):
کاربر تغییرات را دستی با :w ذخیره میکند.
این روش پیشفرض vi/vim است.
رویکرد پیشفرض vi/vim، ذخیره دستی است. یعنی شما باید با : + w فایل را ذخیره کنید. اگر بدون ذخیره بخواهید خارج شوید، vi به شما هشدار میدهد.
این حالت پیشفرض هنگام ورود به vi است. در این حالت، کلیدها به عنوان دستور تفسیر میشوند نه متن. برای حرکت، کپی، حذف، جایگزینی و ... از این حالت استفاده میشود.
مثال: dd (حذف خط)، yy (کپی خط)، p (چسباندن)
در این حالت، شما متن را تایپ میکنید و وارد میشود. برای ورود به این حالت، از کلیدهای i، a، o، I، A، O استفاده میشود.
مثال: i (درج قبل از مکاننما)، a (درج بعد از مکاننما)
این حالت با زدن : فعال میشود و برای دستورات پیشرفته
مانند ذخیره (:w)، خروج (:q)، جستجو و جایگزینی (:%s/old/new/g)
استفاده میشود.
مثال: :wq (ذخیره و خروج)، :q! (خروج بدون ذخیره)
برخی منابع این را حالت چهارم نیز در نظر میگیرند. با زدن v در Command Mode وارد این حالت میشوید و میتوانید متن را انتخاب کنید و سپس عملیاتی مانند کپی، حذف یا جایگزینی روی آن انجام دهید.
مثال: v (انتخاب کاراکتر)، V (انتخاب خط)، Ctrl + v (انتخاب ستونی)
برای باز کردن یک فایل با vi، از دستور زیر استفاده میشود:
این دستور فایل filename.txt را در ویرایشگر vi باز میکند.
پس از ورود به vi، به طور پیشفرض در Command Mode هستید. برای شروع تایپ، باید یکی از کلیدهای ورود به Insert Mode را بزنید.
پس از باز شدن فایل، با زدن i وارد Insert Mode میشوید و میتوانید متن تایپ کنید.
در پایین صفحه -- INSERT -- نمایش داده میشود.
پس از اتمام تایپ، با زدن Esc از Insert Mode خارج شده و به Command Mode باز میگردید.
سپس با :wq فایل را ذخیره کرده و خارج میشوید.
این جدول بر اساس منبع معتبر Linux Professional Institute تهیه شده است:
| کلید | توضیح |
|---|---|
| i | درج متن قبل از مکاننما |
| I | درج متن قبل از ابتدای خط |
| a | درج متن بعد از مکاننما |
| A | درج متن در انتهای خط |
| o | ایجاد خط جدید زیر مکاننما و ورود به Insert Mode |
| O | ایجاد خط جدید بالای مکاننما و ورود به Insert Mode |
| dd | حذف خط جاری |
| dw | حذف کلمه جاری (از مکاننما تا انتهای کلمه) |
| yy | کپی (Yank) خط جاری |
| yw | کپی (Yank) کلمه جاری |
| p | چسباندن متن کپی شده بعد از مکاننما |
| P | چسباندن متن کپی شده قبل از مکاننما |
| u | Undo (بازگشت به قبل) |
| Ctrl + r | Redo (بازگشت به بعد) |
| x | حذف یک کاراکتر از زیر مکاننما |
| r | جایگزینی یک کاراکتر |
| R | ورود به حالت Replace (جایگزینی مداوم) |
| دستور | توضیح |
|---|---|
:w |
ذخیره فایل (Write) |
:q |
خروج (Quit) |
:wq |
ذخیره و خروج |
:q! |
خروج بدون ذخیره (اجباری) |
:w! filename |
ذخیره با نام جدید (بازنویسی اجباری) |
:wq filename |
ذخیره با نام جدید و خروج |
:%s/old/new/g |
جایگزینی همه موارد old با new در کل فایل |
:%s/old/new/gc |
جایگزینی با تأیید (confirm) هر مورد |
:set number |
نمایش شماره خطوط |
:set nonumber |
عدم نمایش شماره خطوط |
:set paste |
فعالسازی حالت Paste (برای چسباندن بدون فرمتبندی اضافی) |
:set nopaste |
غیرفعالسازی حالت Paste |
:wq و Enter.:q! و Enter.متن و Enter.:%s/old/new/g.| حالت | توضیح | ورود | خروج |
|---|---|---|---|
| Command | دستورات حرکتی، کپی، حذف، جایگزینی | پیشفرض | Esc (اگر در Insert هستید) |
| Insert | تایپ و درج متن | i، a، o، I، A، O | Esc |
| Ex / Cmd-Line | دستورات پیشرفته (ذخیره، خروج، جستجو، جایگزینی) | :، /، ? | Enter (اجرا) یا Esc (لغو) |
| Visual | انتخاب متن برای کپی/حذف | v، V، Ctrl + v | Esc |
:w:wq:q!متن:%s/old/new/g